import { ref, onMounted } from 'vue';
import { getMonthlyOrderAmount, type OrderStatsData } from '/@/api/dashboard/orderStats';
import type { GrowCardItem } from '../data';

/**
 * 订单统计数据管理Hook
 */
export function useOrderStats() {
  // 订单统计数据
  const orderStats = ref<OrderStatsData>({
    paid_total_amt: 0, // 已付款总额
    new_over: 0, // 完结工单总数
    paid_orders: 0, // 订单数量
    growthRate: 0,
    period: '月',
  });

  // 加载状态
  const loading = ref(false);

  // 错误信息
  const error = ref<string>('');

  /**
   * 获取订单统计数据
   */
  async function fetchOrderStats() {
    try {
      loading.value = true;
      error.value = '';

      console.log('开始获取订单统计数据...');

      const response = await getMonthlyOrderAmount({
        period: 'month', // 默认获取月度数据
        year: new Date().getFullYear(),
        month: new Date().getMonth() + 1,
      });

      if (true) {
        orderStats.value = {
          paid_total_amt: response.paid_total_amt || 0, // 已付款总额
          new_over: response.new_over || 0, // 完结工单总数
          paid_orders: response.paid_orders || 0, // 订单数量
          growthRate: response.result?.growthRate || 0,
          period: response.result?.period || '月',
        };

        console.log('订单统计数据获取成功:', orderStats.value);
      } else {
        error.value = response?.message || '获取订单统计数据失败';
        console.error('获取订单统计数据失败:', error.value);
      }
    } catch (err) {
      error.value = '网络请求失败';
      console.error('获取订单统计数据异常:', err);

      // 在开发环境下使用模拟数据
      if (import.meta.env.DEV) {
        console.log('使用模拟数据...');
        orderStats.value = {
          paid_total_amt: 156780, // 已付款总额
          new_over: 2340, // 完结工单总数
          paid_orders: 1268, // 订单数量
          growthRate: 12.5,
          period: '月',
        };
      }
    } finally {
      loading.value = false;
    }
  }

  /**
   * 将订单统计数据转换为卡片显示格式
   */
  function getOrderCardData(): GrowCardItem {
    return {
      title: '订单额',
      icon: 'total-sales|svg',
      value: orderStats.value.paid_total_amt, // 已付款总额
      total: orderStats.value.new_over, // 完结工单总数
      color: 'blue',
      action: orderStats.value.period,
      footer: `已付款订单数量: ${orderStats.value.paid_orders}`, // 订单数量
    };
  }

  /**
   * 刷新数据
   */
  function refresh() {
    fetchOrderStats();
  }

  // 组件挂载时自动获取数据
  onMounted(() => {
    fetchOrderStats();
  });

  return {
    orderStats,
    loading,
    error,
    fetchOrderStats,
    getOrderCardData,
    refresh,
  };
}
